Psycholinguistik mal nicht langweilig, ayy!

PsychoPy Tutorial

Zum Einstieg

Um PsychoPy nutzen zu können, muss das Programm heruntergeladen werden. Das geht auf https://www.psychopy.org/

Builderöffnen

Generelle Einstellungen

Einstellungn

In der Leiste oben, egal in welchem Fenster, befindet sich ein Zahnradsymbol, das zu den Einstellungen führt. Dort können viele Einstellungen für das gesamte Experiment geändert werden. Besonders wichtig ist aber der Punkt „Experiment info“, den man unter „Basic“ findet, das ist die Tabelle ganz unten. Dort kann man festlegen, welche Infos zu Beginn des Experiments gesammelt werden sollen. In der linken Spalte „Field“ trägt man den Namen der Variable ein, anfangs steht da zum Beispiel u. A. oft „session“. In der Spalte rechts trägt man dann einen default-Wert ein, also der Wert, der gespeichert werden soll, wenn man zu Anfang des Experiments keinen speziellen Wert eingibt. Man kann beliebig viele Variablen hinzufügen, aber nicht beliebig viele entfernen. Die Variable „participant“ ist verpflichtend; wenn man sie löscht, dann funktioniert das Experiment nicht.

Builder: Flow, Routine, Komponente

Der Builder ist, neben der Leiste oben, im Wesentlichen in drei Bereiche eingeteilt: den Komponentenbereich rechts, den Routinenbereich links und den Flowbereich unten.

Builder

Der Flow ist das gesamte Experiment. Es besteht aus verschiedenen Abschnitten, den Routinen. Eine Routine könnte zum Beispiel dazu dienen, eine Nachricht anzuzeigen, dass das Experiment begonnen hat oder um ein Wort zu zeigen, während eine Antwort per Tastatur gespeichert wird. Eine Routine wiederum besteht aus verschiedenen Komponenten, die jeweils eine Teilaufgabe übernehmen. Nehmen wir uns als Beispiel die Routine, die ein Wort zeigen soll, während eine Antwort per Tastatur erwartet wird. In diesem Fall würde man eine Text-Komponente und eine Keyboard-Komponente verwenden. Die Text-Komponente hätte dann die Aufgabe, den Text, also das Wort zu zeigen, während die Keyboard-Komponente die Antwort per Tastatur abwarten, auf sie reagieren und sie speichern müsste.

Wenn man auf ein Icon im Komponentenbereich klickt, wird eine Komponente in den Routinenbereich eingefügt. Die Routine wiederum wird im Flowbereich unten angezeigt. Um eine neue Routine zu erstellen, muss man im Flowbereich auf Insert Routine klicken und im Flowbereich den Punkt wählen, wo die Routine hingesetzt werden soll. Wenn man auf eine Routine klickt, wird sie angezeigt.

Wie kann man eine Komponente bearbeiten?

Um die eingefügte Komponente zu bearbeiten, muss auf die Komponente geklickt werden.

Dann öffnet sich ein Fenster mit den komponentenspezifischen Einstellungen. Man kann (und manchmal muss man) einen Start- und Endpunkt auswählen. Dieser kann eine Zeit in Sekunden sein, ein Frame des Experiments oder eine Bedingung. Bei allen Komponenten, die im Experiment für den Teilnehmenden zu sehen sind, wie Text oder Bilder, können außerdem in ihrer Größe und Position, manchmal auch in ihrer Farbe angepasst werden. Dies ist meistens in den Fenstern Layout, Appearance oder Formatting möglich.

Quasi jede Komponente hat in den Einstellungen den Abschnitt „Data“. Was man darin einstellen kann, ist je nach Komponente leicht unterschiedlich. Es geht hier aber immer um die Werte, die für die Komponente während des Experiments gespeichert werden sollen. Ein Beispiel ist der Zeitpunkt, wann die Komponente im Experiment begonnen hat und wann sie beendet wurde.

Den Abschnitt „Testing“ gibt es auch immer. Er ist vor allem nützlich, da man dort eine Komponente vorübergehend ausschalten kann, ohne sie zu löschen oder ihre Einstellungen zu verändern. Das ist vor allem, dann hilfreich, wenn man nur einzelne Teile eine Routine ausführen möchte.

Je nach Komponente gibt es noch weitere, speziellere Einstellungen, die später erklärt werden, wenn die jeweilige Komponente erklärt wird.

Welche Komponenten gibt es?

Text-Komponente und Textbox-Komponente

Beide Komponenten dienen dazu, Text anzuzeigen. Deswegen wird sie oft genutzt, um Anleitungen oder Stimuli anzuzeigen. Allerdings gibt es einige Unterschiede, weswegen es in manchen Fällen schlauer sein kann, eher die eine oder eher die andere Komponente zu nutzen.

So eignet sich die Text-Komponente eher dazu, einen kurzen, statischen Text anzuzeigen. Außerdem ist auf die Millisekunde genau, weswegen sie besser funktioniert, wenn man einen Text sehr schnell zeigen oder entfernen möchte.

Die Textbox-Komponente bietet hingegen den Vorteil, einen automatischen Zeilenumbruch vorzunehmen, wodurch sie sich für lange Texte eignet. Außerdem kann man im Experiment in der Textbox tippen, wenn diese Funktion bei der Erstellung des Experiments erlaubt wird. Dadurch kann der Teilnehmer, wenn gewünscht, einen Text im Experiment eingeben.

Spezielle Einstellungen der Text- und Textbox-Komponente sind vor allem die Einstellungen zur Formatierung des Texts. Neben regulären Einstellungen wie der Schriftgröße, kann hier auch der Sprachstil (Links nach Rechts, Rechts nach Links, Arabisch) eingestellt werden. Für die Textbox-Komponente kann ausgewählt werden, ob der Text bearbeitet können werden soll.

Der anzuzeigende Text muss bei beiden Komponenten unter „Basic“ im Feld „Text“ eingetragen werden.

Polygon-Komponente

Die Polygon-Komponente zeigt ein Symbol an, das man selbst wählen muss. Sie wird zum Beispiel oft benutzt, um ein Fixationskreuz anzuzeigen, man kann aber auch andere Formen auswählen, wie bspw. ein Dreieck. Auch hier können die Farbe, Größe und Position eingestellt werden.

Keyboard-Komponente

Die Keyboard-Komponente ermöglicht den Einsatz der Tastatur. Sie wird aber nicht benötigt, damit in einer Textbox-Komponente etwas eingegeben werden kann. Stattdessen wird sie hauptsächlich dafür genutzt, eine Antwort zu geben. Zum Beispiel könnte man in einer Lexikalischen Entscheidungsaufgabe j drücken, um zu sagen, dass etwas ein Wort ist und f drücken, um zu sagen, dass etwas kein Wort ist.

In der Keyboard-Komponente können unter „Basic“ bei „Allowed Keys“ Tasten angegeben werden, die gedrückt werden dürfen. Man muss den Namen der Taste aber immer in Anführungszeichen ( z.B. ‚a‘) setzen. Gibt man dort nichts an, darf alles gedrückt werden. Für das gerade gegebene Beispiel (die LDT) wäre es aber sinnvoll ‚j‘ und ‚f‘ anzugeben, denn sonst könnten auch Tasten als Antwort gespeichert werden, die gar nicht zur Verfügung stehen.

Eine weitere wichtige Funktion, die es auch bei einigen anderen Komponenten gibt, ist auch unter „Basic“ zu finden: „Force End of Routine“. Wird diese Option ausgewählt, dann wird die ganze Routine beendet, sobald eine Taste auf der Tastatur gedrückt wurde. Auch das würde für die LDT Sinn ergeben, da man ja will, dass es nach dem Geben der Antwort sofort weitergeht. In diesem Fall muss kein Endzeitpunkt für den gezeigten Stimulus und die Tastaturkomponente angeben werden: Sie laufen, solange die Routine läuft.

Unter „Data“ gibt es zusätzlich die Möglichkeit, zu wählen, welcher Tastendruck gespeichert werden soll (der Letzte, der Erste, jeder oder keiner). Außerdem kann man auch speichern, ob die gegebene Antwort richtig ist. Dazu muss man die richtige Antwort natürlich angeben.

Die Mouse-Komponente ermöglicht die Nutzung der Maus. Unter „Basic“ kann man hier einerseits unter „Clickable Stimuli“ angeben, auf welche Objekte geklickt können werden soll. Dazu muss man den Namen der Komponente eintragen; andererseits kann man unter „End Routine On Press“ spezifisch angeben, auf was für eine Art von Klick reagiert werden soll, um die Routine zu beenden. Natürlich muss man „End Routine On Press“ aber nicht nutzen.

Unter „Data“ kann man angeben, ob der „Mouse State“ nur am Ende, bei einem Klick, bei eine, validen Klick, für jeden Frame oder gar nicht gespeichert werden soll.

Wichtig ist, dass in den generellen Einstellungen des Experiments „Show Mouse“ ausgewählt werden muss. Sonst existiert die Maus zwar, ist aber nicht sichtbar.

Ein Slider ist eine Skala, auf der eine Antwortmöglichkeit gewählt werden kann. Man kann ihn unter „Basic“ bei „Styles“ auf verschiedene Arten einstellen. Die werden in der Tabelle im Bild erläutert.

Slidertabelle Table created by Lara von Dombrowski

Man kann neben den Antwortmöglichkeiten „Ticks“ (müssen Zahlen sein) auch Labels zu den Antwortmöglichkeiten unter „Labels“ eintragen.

Anfangs steht unter „Ticks“ meistens 1,2,3,4,5. Das bedeutet, dass es fünf gleichmäßig verteilte Antwortmöglichkeiten gibt. Man muss aber nicht mit durchgängigen Zahlen arbeiten. Man könnte bspw. auch 1,2,3,5 eintragen. In diesem Fall stünden die Antwortmöglichkeiten 1,2,3 eher links, dann gäbe es eine größere Lücke und rechts befände sich dann die Antwortmöglichkeit 5, auch wenn es insgesamt natürlich nur vier Antwortmöglichkeiten gibt.

Image-Komponente

Die Image-Komponente dient dazu ein Bild anzuzeigen. Dazu muss unter „Basic“ ganz unten der Dateipfad des Bildes angegeben werden. Man kann den absoluten Dateipfad oder den relativen Dateipfand (ausgehend von der Experimentdatei) nutzen. Alternativ kann man auch mit einem Klick auf das Ordnersymbol die zu nutzende Datei raussuchen.

Button-Komponente

Die Button-Komponente ist im Experiment ein Knopf. Auch hier kann „Force End of Routine“ gewählt werden. Außerdem kann man den Text, der im Knopf angezeigt wird, bearbeiten und man kann eine „Callback Function“ einfügen. Das ist ein Code, der ausgeführt werden soll, wenn der Knopf vom Teilnehmenden gedrückt wird.

Sound-Komponente

Die Sound-Komponente dient dazu, einen Ton abspielen zu lassen. Dieser Ton muss unter „Basic“ bei „Sound“ spezifiziert werden. Man kann hier sowohl den Namen einer Note oder einer Frequenz als auch den Dateipfad einer Audiodatei nutzen. In jedem Fall muss hier ein Endzeitpunkt angegeben werden, auch wenn die Audiodatei eine begrenzte Länge hat.

Unter „Device“ kann man den zu nutzenden Lautsprecher angeben.

Microphone-Komponente

Mit der Microphone-Komponente können Aufnahmen während des Experiments gemacht werden. Auch hier kann man unter „Device“ angeben, welches Gerät genutzt werden soll. Unter „Data“ kann man außerdem den Dateityp bestimmen, in dem die Aufnahme ausgegeben werden soll. An sich gibt es auch eine Transkriptionsfunktion. Die arbeitet aber mit Google zusammen und kostet Geld.

Demos

Um PsychoPy zu testen, eignen sich gut die im Programm enthaltenen Demoexperimente, die man in der Leiste oben unter „Demos“ und dann unter „Experiments“ findet. Vor der ersten Nutzung müssen die Demos erst entpackt werden („Unpack Demos“). Neben diesen im Programm enthaltenen Demos gibt es weitere Demos auf der Internetseite von PsychoPy. Demo1 Demo2

Conditions File

Meistens benötigt man eine Conditions File. Eine Conditions File wird mit Excel erstellt speichert für jeden Durchlauf (wird gleich bei Schleifen erklärt) die Conditions. Zum Beispiel könnte in einer LDT das Targetwort in einem Durchlauf „Baum“ sein und im nächsten Durchlauf „Sichsu“. Man kann auch Dateipfade in einer Conditions File speichern. Das macht zum Beispiel dann Sinn, wenn jedes Mal ein anderes Bild gezeigt oder ein anderer Laut gespielt werden soll. Man kann auch Werte angeben, die das Experiment später nicht benötigt, die einem aber selbst den Überblick erleichtern.



Schleifen und Variablen

Um durch eine Conditions File durchlaufen zu können, muss eine Schleife genutzt werden. Die kann im Builder im Flowbereich mit „Insert Loop“ erstellt werden. Dann muss man noch angeben, um welche Routine(n) sie gelegt werden soll, also welche Routinen des Experiments wiederholt werden sollen. Routinen wie eine Stimulusanzeige will man ja meistens wiederholen, im Gegensatz zu einer Willkommensnachricht.

Schleife

Die Conditions File wird dann ganz unten unter „Conditions“ angegeben. Man kann aber auch viele weitere Einstellungen bearbeiten, wie z. B. wie oft die Conditions File durchlaufen werden soll.

Eine wichtige Einstellung ist „Loop type“. Hier gibt es die Wahl zwischen fünf Optionen, die Wichtigsten sind aber:

  • Random: Die Conditions File wird in einer zufälligen Reihenfolge durchlaufen
  • : Die Conditions File wird von oben nach unten durchlaufen
Für psycholinguistische Experimente bietet es sich manchmal eher an, die Conditions File in Excel zu pseudorandomisieren und dann sequenziell durchlaufen zu lassen, statt sie mit random durchlaufen zu lassen. Durch die Pseudorandomisierung wird nämlich vermieden, dass zu ähnliche Stimuli hintereinander auftauchen. Bei einer Randomisierung durch PsychoPy ist das nicht garantiert.

Durch die Nutzung einer Schleife werden die Spalten der Conditions File zu in PsychoPy nutzbaren Variablen. Die Namen dieser Variablen werden nach Auswahl der Conditions File im Schleifenfenster unten angegeben. Nun kann man diese Variablen nutzen, um bspw. das Targetwort bei jedem Durchlauf ändern zu lassen. Nehmen wir das Beispiel der LDT von vorhin: Das Targetwort in einem Durchlauf ist „Baum“ und im nächsten Durchlauf „Sichsu“. Die beiden Wörter stünden in der Conditions File dann in einer Spalte, die „target“ heißen könnte. Wenn man jetzt „$target“ in das Textfeld der Text- oder Textbox-Komponente eingibt und rechts daneben statt „constant“ „set every repeat“ auswählt, dann wird in jedem Durchlauf ein anderes Wort aus der Spalte „target“ in der Conditions File gezeigt.

Das „$“ muss in PsychoPy zwingend vor dem Variablennamen stehen. Es markiert den Variablennamen als Code. Streng genommen handelt es sich nämlich bereits bei dem Variablennamen um Python-Code. Wenn man im Coder arbeitet, muss das natürlich nicht gemacht werden.

Ausführung des Experiments

Um ein Experiment nach der Erstellung auszuführen, muss oben bei Desktop auf das Startsymbol geklickt werden. Bei „Experiment“ kann aber noch eingestellt werden, ob das Experiment nur testweise („Pilot“) oder wirklich („Run“) ausgeführt werden soll.

Bei „Pilot“ erscheint das Experiment in einem kleinen Fenster, bei „Run“ wird es auf dem gesamten Bildschirm angezeigt. In beiden Fällen lässt sich das Experiment mit der Escape-Taste abbrechen.

Auswertung

Wenn ein Experiment ausgeführt wurde, dann wird auf dem PC, im Ordner, in dem sich die Experimentdatei befindet, ein weiterer Ordner erstellt, der „data“ heißt. Dort wird nach einem Durchlauf eine CSV-Datei gespeichert, die die gespeicherten Daten enthält. Wenn man eine Mikrofon-Komponente genutzt hat, werden dort außerdem Audiodateien mit den Aufnahmen gespeichert.

Die CSV-Datei kann mit Excel gelesen werden, befindet sich aber zuerst in einem schlecht lesbaren Zustand. Um das zu ändern, muss man sie in einer XLSX-Datei umwandeln.

Manchmal wird die Notwendigkeit dessen von Excel automatisch erkannt. Es erscheint dann ein Fenster mit einem Textkonvertierungsassistenten. Wenn das nicht passiert, geht man folgendermaßen vor: Man markiert bei Excel zuerst die ganze erste Spalte. Danach geht man in der Leiste oben zu „Daten“ und wählt „Text in Spalten“ aus. In dem neuen Fenster wählt man „getrennt“ und klickt auf „weiter“. Im zweiten Schritt wählt man statt „Tabstopp“ „Komma“ aus und klickt auf „weiter“. Dann kann man auf „Fertig stellen“ klicken“. Jetzt sind die Dateien in einem lesbaren Format.

Excel1 Excel2


Coden für besondere Funktionen

Für manche besonderen Funktionen ist es unabdingbar, Code zu nutzen. Wenn man trotzdem den Builder nutzen will, könnte man erst einen Großteil des Experiments im Builder erstellen und das Experiment dann in den Coder überführen. Das geht oben bei Desktop mit einem Klick auf das linke der beiden Symbole (enthält das Python-Logo). Dadurch wird die Builder-, also eine psyexp-Datei, zu einer Coder-, also einer py-Datei. Das ist ein irreversibler Vorgang.

Oft ist es aber auch möglich, die Code-Komponente zu nutzen. In ihr kann man spezielle Funktionen programmieren, die dann in das Python-Skript eingefügt werden. Man kann dadurch also auf alle Variablen zugreifen, die im Python-Skript existieren, selbst dann, wenn man sie nicht über eine Komponente auswählen kann. Man kann auch die Position des Codesnippets im Python-Skript bestimmen.

„Besondere Funktionen“ umfassen hierbei zum Teil nicht ganz so besondere Funktionen wie z. B. die Anpassung eines Textes basierend auf einer vorherigen Antwort. Zum Beispiel könnte es sein, dass die Anleitung sich für Links- und Rechtshänder unterscheidet, dass zum Beispiel verschiedene Tasten gedrückt werden müssen. Um den Anleitungstext entsprechend zu gestalten, ist es notwendig zu programmieren.

Für einige häufig vorkommenden Anwendungsfälle haben wir Builder-Dateien vorbereitet, die bereits entsprechende Code-Komponenten enthalten. So können Sie im Builder quasi um den Code herumbauen und die besondere Funktion nutzen, ohne sie selbst programmieren zu müssen. Sie finden die Dateien ganz unten auf der Seite.

  • Rechts-Links-Bedingung: Händigkeit, der gerade erwähnte Fall
  • Nutzung mehrerer verschiedener Conditions Files: wenn man verschiedenen Probanden das gleiche Experiment mit verschiedenen Stimuli, also verschiedenen Conditions Files geben möchte, die man zu Beginn des Experimentes wählen will.
  • Konvertierung der Sliderantworten zu den Labels: In der Auswertungsdatei wird statt dem Zahlenwert der Antwort auf dem Slider die Antwort als Label angezeigt

Weitere Informationen

Natürlich gibt es noch weitere Komponenten und andere Funktionen. Da diese Anleitung aber eher einen ersten Einblick in PsychoPy geben soll, wird nicht auf alles eingegangen. Es gibt aber weitere Quellen, die auf mehr Aspekte eingehen.


Es gibt auch eine weitere Anleitung ab Kapitel 10 im „The Hitchhiker’s Guide to PSGY1001“ von Jan Derrfuss (University of Nottingham). Hier die vollständige Literaturangabe inkl. Link: Derrfuss, J. (2022). The Hitchhiker's Guide to PSGY 1001. University of Nottingham.


Darüber hinaus gibt es ausführliche Dokumentationen auf der PsychoPy-Internetseite:


Außerdem gibt es ein Forum:

Codesnippets

Here you can download the templates with the code snippets for special functions: